home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #14
/
Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO
/
bbs_game
/
lunat41a.zip
/
STRUCTS.DOC
< prev
next >
Wrap
Text File
|
1995-10-15
|
32KB
|
573 lines
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
STRUCTS.DOC: The purpose of this file is to explain the workings of the
player files, and IGM inclusion, for 3rd Party Support
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
FOR USE WITH LUNATIX 2.3A or NEWER ONLY!
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This revision to STRUCTS.DOC: 9-13-95
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Headings to search for:
IGM INFORMATION : Info about data files, etc, for IGM Authors
IGS SCRIPT INFO : Info about how to create an IGS script Story for Lunatix
ALTERNATE ROOMS : Info about how to change the "look" of the Lunatix rooms
----------------
IGM INFORMATION:
----------------
This document is not designed to teach you how to program, or to explain the
process involved in writing a door game (IGM's are, after all, door games
themselves that just happen to read data from another door game). If you
plan to write an IGM, a good knowledge of door programming is assumed. The
purpose of STRUCTS.DOC is to explain what files you need to read and how
they're structed, so that an IGM you create can fit into Lunatix.
If you are a good programmer but haven't tried door programming, you should
get a good Door library for whatever language you plan to use. I use
QBSerial 3.20 by Jeff Sumberg, which is for QuickBASIC 4.x, Visual Basic for
DOS, and some other DOS Basics. It is a wonderful tool. I'm also told that
"DDPlus" is available for Pascal programmers, which also includes methods
to read drop files and so on (plus Pascal does ANSI without the hastle of
"emulating" the way I have to do in QB). Door routines for C++ may also be
available. QBSER320.ZIP is availabe on The Rolling Eye.
Your IGM will need to begin by reading two files. The naming conventions
are MODEM.CFG and LUNATIX.CFG for node 0, or for nodes other than 0, it
will be MODEM.X and LUNATIX.X where X=NodeNum (such as LUNATIX.5). Note:
Do NOT read from a Drop file... MODEM.X is there in case the drop file
gets overwritten by another user.
For Simplicity, these files will be referred to as LUNATIX.CFG and MODEM.CFG
although it should be understood that for nodes other than 0, it will be
LUNATIX.X and MODEM.X. Your IGM should probably be made to accept a NODE
number on the command line, such as MYIGM.EXE N1 for node 1.
LUNATIX.CFG is Random Access, 80 characters per record. It should be in
the default directory. It has the following Format, record by record:
Format Meaning (RANDOM ACCESS, 80 CHARS per record)
----------------------------------------------------------------------------
String Name of the Clinic (Imenz Aine was the default)
String Full Path and Name of Todays News file
String Full Path and Name of Yesterday's News file
## Max Closet fights allowed per day
# Max Player fights allowed per day
String Full Path to Lunatix's master node (I.E. \LUNATIX\)
MODEM.CFG is a Sequential Access file, read it in line by line:
LINE # Meaning (#10 added in 2.4b+, #11-12-2.5a+, #13-3.0b+)
----------------------------------------------------------------------------
1 User's Real name (for use in finding Alias in NAMELIST.DAT)
2 Port% - The Com Port #, or 0 for Local
3 Irq% - An IRQ value, Value of 0 means 'use default for the port'
4 Length% - In an 'N81' string, the 8 (sometimes 7)
5 Parity% - 2=Even, 1=Odd, 0=None
6 DATA Bits% - In an 'N81' string, the 1 (sometimes 2)
7 Original Baud-Rate&, as reported in the drop file
8 Handshake% - 0=None, 1=XON/XOFF, 2=RTS/CTS, 3=Both
9 FOSSIL% - 1=Fossil driver in use, 0=User internal routines
10 Lunatix Baud-Rate& - Value, or 0 means "use current set rate"
11 Record Number (A player's record-num as entered in PLAYERS.DAT)
12 Alias Name (Their player-name as used in Players.Dat)
13 Slicing Mode (0 = Time Slicing disabled, 1 = slicing enabled)
Here are a few points you need to know when having your IGM initiate modem
setup commands. Line #7 is the Baud rate that Lunatix reads from whatever
BBS Drop file is in use, and I've found that it's not always completely
accurate. Sometimes if the BBS is running with a Fossil it might say
38400... sometimes because the modem wasn't set up with a "W2" in the init
string. The second Baud rate that is reported, line 10, is the rate that
Lunatix is running. If this line is "0" then Lunatix is not messing with
the rate, it just leaves it at whatever speed it was set when it gets control.
If this rate = Line 7, then that's the rate in use. If this line is a non-
zero value and the FOSSIL mode is active, then line 10 will be the speed that
the FOSSIL should be initialized at. Remember, if your IGM messes up the
baud rate and Lunatix has been set up with a "locked baud" option in the
install, then Lunatix will also run (when returned to from the IGM) with the
wrong baud rate. So be sure... and if you have any questions PLEASE ask me
so we can be sure your IGM handles this correctly. :)
As of version 3.0b, Lunatix is attempting to give "time slices" to the
system, for a multi-tasking environment such as OS2, Windows, or DesqView.
Line #13 in the Modem.CFG file has been added so if your IGM has time
slicing routines, you can easily find out whether or not the sysop wishes
to use them for his/her system, as slicing slows down things and should be
avoided if it isn't needed.
--------- Player Data Files ----------
NAMELIST.DAT has a line-entry format of Real Name ~Alias Name.
Read this file, searching for Real Name to get the Player's Alias:
A sample NAMELIST.DAT might look like:
Sysop ~`%T`9imelor`%D
Bill Smith ~Superman
Jane Doe ~Wonder Woman
John Doe ~Batman
George The King ~`4SpiderMan
(Note, you might not have to read the NAMELIST.DAT now that the MODEM.CFG
reports the real name, player name, and record number).
The Alias name is then used in PLAYERS.DAT, which is a random-access file
with 240 characters per record. The 240 characters must be broken down
by the program and interpreted. This will be in the MASTER LUNATIX
directory. Note, your IGM must preserve all the info here... even though
parts of the last 132 characters aren't in use, be sure to preserve it since
it is there for future expansion by me.
COUNT MEANING NOTES
----------------------------------------------------------------------------
15 Alias$ Used to look up the person's record
8 Money$ How many Crazy Bucks are on-hand
8 Stash$ How many Crazy Bucks are in the stash
1 Sex$ M for Male and F for Female
4 CurCode$ Current Escape Code, I.E. 0110
20 NotAgain$ This will be explained below
1 Weapon$ A to L... which weapon is in hand
1 Defense$ A to L... which defense is in hand
8 Hit$ How many Hit Points a player has
8 Exp$ How many experience points a player has
2 Level 1 to 12, Player's skill level
10 LastPlay$ Date of last play, in the form MM/DD/YYYY
2 ClosFig$ Closet fights remaining
1 PlayFig$ Player Fights Remaining
3 PlayKill$ Count of Player Kills
10 GuardNam$ The name of the Player's guard
8 PayGuard$ How much the guard accepted as a bribe
130 Rest$ Remaining section RESERVED. Preserve it.
----------------------------------------------------------------------------
The NotAgain$ can be broken down into its composite components also:
COUNT MEANING NOTES
----------------------------------------------------------------------------
1 Can Attempt Escape Space=Yes, Non-Space = No
1 Is player Alive Space=Yes, ^=No, #=Will be alive tomorrow
1 Can "Do something Crazy" Space=Yes, Non-Space = No
1 Has Unfair Advantage Space=No, Non-Space = Yes
1 Can Flirt with Nurse Space=Yes, Non-Space = No
1 Next Available Flirt 1 to 6
3 Times Laid Three-Digit Bedpost Notches
1 Days since Last Play 0 to 9 days since last play
1 Times Escaped How many times at level-12 (won)
1 Can Play Prank Space=Yes, Non-Space = no
1 Is "Awake" on a node Space=No, Non-Space = Yes
1 Can "Be a Nuisance" Space=Yes, Non-Space = no
1 Has looked at map Space=No, Non-Space = Yes
3 Guessed codes count How many times to guess the right passcode
1 Looked in Trash Can (IGM) Space=No, Non-Space = Yes
1 Reserved always a "|" ending symbol
------------------------------------------------------------------------
Portions of the 130-character Rest$, as of this structs.doc, are used for:
START COUNT MEANING
----------------------------------------------------------------------------
1 1 : Right-Half of "day" Statue was last looked at (Widow's Lair)
2 5 : Statue's 5-letter Code (Widow's Lair)
7 1 : Is the Right (Widow's) door open? Space=NO, Non-Space=YES!
8 1 : Day Portion (ordered pizza last on this day) (Widow's Lair)
9 1 : "Screaming" points yet? Day portion (Widow's Lair)
10 1 : Day Portion of guessing hall-code (Widow's Lair)
11 3 : The 3-number hall code (Widow's Lair)
14 1 : Hall door open? Space=NO, Non-Space = YES! (Widows Lair)
15 1 : Next Expected Flirt (value of 1 to 4) (Gift Shop)
16 1 : Next Expected "bad" gift (1 to 4) (Gift Shop)
17 1 : day portion of last "gift" bought (Gift Shop)
18 1 : A player's "Popularity" points (Value= 0 to 9) (Gift Shop)
19: 1 : Day portion of Last Glitch-Talk (Gift Shop)
20: 1 : Intelligence points (Value= 0 to 9) (Gift Shop)
21: 1 : How many chances to read a book remain (Lunatix.exe)
Note: Some parts of the Rest$ are referred to by "day portion"... this is
the last digit of the day of the month... 01 to 31 truncates the left char
and it'd be 1 for the 1st, 5 for the 15th, 0 for the 20th, and so on. If
today's portion matches the saved portion, then they've *probably* already
done that action today (not completely true but correct often enough to make
it useful).
Your IGM will read the Todays News file name from LUNATIX.CFG (line 2).
You may append news information to this file (it's sequential) by opening
it in append mode and adding news info. This way, your IGM can be a working
part of the whole game. :)
Your IGM may also write to the mail file. The mail files are named
MAIL.X where X is the record number of a user, as it appears in order in
PLAYERS.DAT. Whoever is Record 1 in PLAYERS.DAT has MAIL.1... whoever is
record 15 has MAIL.15, for instance. By searching for a player in the
PLAYERS.DAT and noting the record number, you may add to that player's mail.
Take note, a special line may be put in a player's mail file, which tells
the Mail Reader that the player may respond to someone. the format is:
|A####Alias Name where #### is the Record Number of the user that would be
written back to, and the Alias Name is that player's name. An Example is:
|A2 Mr. Rogers This means write back to player 2, who is Mr. Rogers.
|A42 Santa Clause This means write back to player 42, who is Santa Clause.
The "|A" will always begin the "do you wish to respond" info line, it's
important that the Alias Name begin at character 7, if you plan to write
mail that gives the option of writing back to the author. Note: Be SURE
you understand this, and that the line is a valid record number, otherwise
you might cause the game to crash when a user reads the mail!
----------------------------------------------------------------------------
Your IGM should NOT change the directory. It should open all files using
a path specifier, you may need to pass the path to your IGM on the command
line, in addition to the nodenumber: MYIGM.EXE N1 \NEWIGM\ (as explained
later in this file, a '*' will be replaced with the NodeNum).
Lunatix files should be read from the default directory. To read in
the NAMELIST.DAT, just OPEN NAMELIST.DAT (no path). Lunatix EXPECTS to
be running from its home directory. If not, it is the SYSOP'S fault, and
not the fault of your IGM.
A file called TIMELEFT.X will also be placed into the NODE directory.
When your IGM gets control, it should read Minutes from the top line and
Seconds from the second line. (Note, The .X refers to nodenum,
TIMELEFT.0 for node0, TIMELEFT.12 for Node12..) Also note, as of
Lunatix 3.0c, TIMELEFT.x isn't read back in upon return, because Lunatix
now has a much more accurate time-keeping method of subtracting from the
system timer. However, for compatibility with a version before 3.0c, you
may still want to write the time back to the file. :)
Your IGM should follow this general logic flow:
----------------------------------------------------------------------------
Parse the command line (if you do that, and it IS the easiest way) to get
the node number and possibly other info, such as path to your IGM.
Open TIMELEFT.X (where X=NodeNum)
Input Minutes and Seconds remaining, for use in your IGM.
At this point, you should probably start keeping track of the time
remaining online.
Open LUNATIX.CFG
Input the info from this file, including the MASTER path (DatPath$)
However, DatPath$ may not be important since Lunatix should be defaulted
to that directory.
Open MODEM.CFG
Read information concerning the modem (and user's real name).
Open COM
Setup of the communications parameters based on info from MODEM.CFG
Open YOUR.CFG (Skip if you won't have your own CFG data)
Open NAMELIST.DAT
Look-up the Alias name for the User Name in the line format of
UserName ~AliasName
Open PLAYERS.DAT
Search this random-access file, record by record, for Alias$, then
read in the information for Alias$ (user). You may also take note
of the record number, and use this when saving progress.. put #1, NUM
for instance, where NUM=Player record number.
Game Play
Your game begins at this point, after everything is set up.
Be sure to save the player record frequently (I do at each game
prompt) so if it crashes, the player won't loose any progress.
Save TIMELEFT.X (Write the time back to the Time file, X=NodeNum)
Do this before your IGM releases control back to Lunatix
Exit Game
any wrap-up things should happen before the IGM ends.
Take note, that Lunatix "Shells" out to your IGM. It doesn't create a
batch file that controls the program-to-program flow, it literally drops
out to your IGM. Take note of this, because this lowers the amount of
RAM you'll have to play with, since Lunatix should still be sitting there
in Memory (I think).
Also Note, As your IGM reads/writes to the player files (and any other
really) it should open them in a SHARED mode. If your IGM locks the file,
it may lock another user. For the PLAYERS.DAT, you will just be updating
1 record at a time anyway, not the whole file. I have seen another
alternative which is to duplicate this file and read/write to the
duplicate. I just open them as SHARED so other nodes have access. Seems
to work so far...
Your IGM should be easy to install, because all it has to do is put itself
into the IGM.DAT file. You will probably want to install it with a command
line that will be passed to your IGM. This is almost a necessity for the
Node Number, as your IGM must know the NodeNum. a '*' will be replaced by
NodeNum. An example would be:
`@My `0NEW `@IGM
C:\MYNEW\NEWIGM.EXE N* C:\MYNEW\
Note: The top line is the NAME of your IGM as it appears to players, which
may include color codes. The amount of displayable characters is
35, however it can be longer if the extra chars are color codes.
The second line is the EXECUTABLE command line for your IGM. Note,
in the example I passed the Node number, and the path to the IGM.
Your IGM should also include an option to UNINSTALL. Yes, most any sysop
can just EDIT the IGM.DAT and delete a couple lines to remove an IGM. But
an UNINSTALL option is really nice, and is a REQUIREMENT. Basically, to
Uninstall, you just read the IGM.DAT, writing every line that ISN'T from
your IGM to another file, then copy that temp file over the IGM.DAT file.
=-=-=-=-=-=-=-=-=-=-=-=-=-= SPECIAL NOTICE =-=-=-=-=-=-=-=-=-=-=-=-=-=
Your IGM must meet these requirements to be released as a Lunatix IGM:
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
1) It must be structed (reading setup) as described above
2) It must read from TIMELEFT.X and maintain the time remaining
3) It must write to TIMELEFT.X upon completion
4) It must be relatively easy to install
5) It must include an UNINSTALL option
6) If you charge for your IGM, please don't charge more than $20, which
is the cost of Lunatix itself.
7) You MUST (and this is the most important part) upload a copy of your
IGM to us (405-924-7939) BEFORE you release it, and it must be
approved by us. This is an attempt at quality control, and any IGM's
released without our prior approval will be considered Illegal IGM's.
We will try not to veto an IGM, although if it seriously sucks we might
have to suggest some changes before we okay its release.
8) It should ONLY be called from the Elevator in Lunatix, not as a
pre-play module. Anything not fitting the requirements of an IGM
should be called "Add-Ons" and also must be approved by us.
9) Your IGM must in some way give credit to me, Mike Snyder, for writing
Lunatix. However, I expect absolutely NO payment whatsoever from any
money your IGM earns. Good luck, your profit is yours.
10) Your IGM must, to some extent, be humorous. You don't have the follow
the menu-driven format that Lunatix presents, you are free to be
original. Just... try to create something that people will LIKE!
11) Your IGM must NOT bypass the built-in registration check in Lunatix,
or offer any of the unregister-blocked features. This means your IGM
may NOT allow a player to go past level 5, although it may add to his
experience. (If the game isn't registered, level 5 is the top, no matter
how much experience). Your IGM may NOT allow name changes. Also, your
IGM may NOT add interest to the stash, although you can create your own
means of earning Crazy Bucks. Sorry, this is to insure that IGM's don't
do away with the "incentive" to register Lunatix.
12) Your IGM cannot purposely corrupt the Lunatix Player files, Data files,
or in away find, read, or process the registration key. With respect
to the last part, the author of any IGM which tampers with the reg. codes
will face very serious legal consequences.
If your IGM meets these requirements, and we approve it, we will add it
to an IGM list which will be available with new releases of Lunatix,
Time Port, and other doors we will release.
Reference: Use this information when designing your IGM, if you plan to add
to the player's experience points or Crazy Bucks, or plan to have fighting
routines. This is how Lunatix is set. When giving Crazy Bucks or Experience,
you may want to give less, otherwise if a ton of IGM's eventually develop,
a player could play them all and go up a couple of levels each day. :( So
keep that in mind. For instance, all money or experience given in Lunatix
uses a base number, which is the MAXIMUM that would be given if a player
killed a closet shadow at level X (1 to 12). A portion of this is used to
calculate a fair value. For instance, the maximum Crazy Bucks given by
killing a level 3 shadow is 200. So if a player does something special in
your IGM, for instance, you can use that value and the level to award
experience points. If the level is 3, you might take a random value to
award, up to 200 * 4 (200 is MaxPerShadowExper for level 3, and the
"special" event might be worth 4 shadows for instance. Same for Crazy Bucks.
In this case, you might choose a RANDOM value from 25% - 100% of 800.
Below is a chart of the MAX amount of Money or Experience for each shadow.
Keep in mind that fewer than the max is usually awarded for a kill. Also
shown are default Weapon/Defense costs, Max-Hits per level, and experience
needed to beat the cafeteria lady at each level.
-------------------------------+----------------------------------
Per-Monster Max's | Level values for Hits,Cost,Exp
-------------------------------+----------------------------------
Player Lev. Money Experience Max-Hits W/D Costs Exp^
-------------------------------+----------------------------------
Level 1: 15 10 | 20 50 300
Level 2: 100 75 | 30 500 3000
Level 3: 400 200 | 40 4000 10000
Level 4: 950 425 | 60 11000 25000
Level 5: 2000 1000 | 80 30000 60000
Level 6: 6000 3500 | 100 100000 180000
Level 7: 12000 6200 | 120 200000 400000
Level 8: 25000 11500 | 140 400000 800000
Level 9: 75000 20000 | 200 800000 1500000
Level 10: 200000 43000 | 300 3600000 3000000
Level 11: 400000 85000 | 450 8000000 6000000
Level 12: 600000 120000 | 700 20000000 Can't!
-------------------------------+----------------------------------
Once again, award money and experience in moderation, or at least make the
player work for it. Otherwise people will go up too quickly. :) What I
tend to do is give "alternate" ways of earning money/experience... and it
could cost a closet fight. So the "flow" of things would go along normally
if you take away a closet fight for the "things" players do in your IGM, and
award about the same amount of money/experience that would be gained from a
Closet Fight at the same level.
----------------------------------------------------------------------------
-- ONTHEFLY.X (Added to Lunatix verison 2.5a and newer)
Using a player's record number, your IGM can write to onthefly.<playernum>
Which Lunatix uses to "notify" a player of action in an IGM. For example,
my Chat Room IGM has a /PAGE option, which writes to the "onthefly" file
so a player will be notified to go to the Chat IGM to talk. This is just
a sequential file... open it and append to the end. Lunatix handles it
from there.
If you have any questions, or discover that this document is incomplete,
please let me know right away. Thanks.
Your IGM should state that it is only compatible with Lunatix 2.3a or newer.
If you use the additional lines (after 9) that were added to MODEM.CFG in
later version, you should also note that your IGM/Addon only works with that
version or newer.
------- Addition to version 3.0A ---------- "Stay" in an IGM -----------
Ed Mullins of Mullins Software suggested that I allow players to "sleep" or
whatever in an IGM, and Lunatix 2.5b is released with this feature. This
works really simple. Now when Lunatix goes to an IGM it create a file called
IGMOUT.<player-number> that has 3 lines. The first line is the name of the
IGM as it appears in the Elevator listing. The second line is the command
line to the IGM (also from IGM.DAT). The 3rd line will say "Continue" which
tells Lunatix that when it regains control, the game should continue. An
example might be.. for player 18 (remember, the order is based on the order
is Players.dat)..
IGMOUT.18
---------
`4S`7ome kind of `@IGM!
C:\IGMS\SOMEIGM.EXE /n* c:\lunatix\
Continue
Okay, if you want a player to have the ability to "stay" in your IGM, just
change the last line to anything besides Continue. In the "players online"
listing, this 3rd line will be used to tell that your user is in the IGM.
If Line-3 says "is soundly asleep at the Lunatix Inn" then in the WHERE-IS
option it'd say "Beavis is soundly asleep at the Lunatix Inn"... You could
make the 3rd line same something like... (some examples)
is being held captive by Spartacus's Mom
`6tripped, fell, and went to sleep in the `$Basement.
is hybernating in the Big Bear's IGM.
If you do that, just be sure you realize that a player can't be attacked while
staying in your IGM... so it shouldn't be made as just a way to "dodge" an
attack. You can figure all that out.
You might also want to alter line #2 with another perameter. Your IGM might
look for "/Wake" when it starts (like the node-number thing) and if it's
there, it knows the player should enter the IGM as if they just woke up. But
when you change line #2, and the player "returns" to the IGM the next day,
that extra perameter will be on the command line in IGMOUT, so if you add
to line 2, be sure your IGM will search for it so if the player goes to sleep
again, it won't recursively add the perameter to that line. I hope I made
sense there. Remember, the IGMOUT file only exists with version 2.5b and
newer. :)
Note, when a player "stays" in the IGM, their "online" status (character 13
in the NotAgain$ as described much earlier in this document) is set to on.
However, it will have a value of "@" which means the player isn't actually
"online", they're offline but in the IGM. Your IGM might use this variable
if you need to know which players are playing, which are not, and which are
asleep in an IGM. :)
Here is an idea I might work on for an IGM, but everyone else is free to
as well. Have the player get "captured" somehow in the IGM, and it lasts
for 24 hours... use the command-line thing I talked about to say /PRISONER
or something so your IGM knows if they try to play they're a prisoner and
to go accordingly. Then, another player could go to the IGM and rescue them.
That's just one idea, I'm sure all the talented programmers out there can
think of lots of cool things for this option. :)
----------------
ALTERNATE ROOMS:
----------------
---- Another addition to version 3.0A ------ Change the ROOM descripts -----
This is another really cool feature I have implemented in version 3.0a. If
Lunatix finds ROOMx.TXT files, it will use them instead of its own room
description. However, there are some rooms that should *NOT* have an
external description (Luckily, Lunatix won't read them, hehehe). For example,
ROOM1.TXT is the Players' "bedroom". Here is a listing:
1: The Player's Own Room 2: Inside the Closet
3: Out in the Hallway 4: In the Cafeteria
5: Talking to Socrates (Buy/Sell) 7: Socrate's Weapon List
8: Napoleon's Defense List 9: Talking to Napoleon
11: Einstien Heals You 13: Inside another Player's Room
15: Female Nurse in the Hall 16: Flirting with Female Nurse
17: Playing a Prank on somebody 18: Inside the Elevator
19: Male Nurse in the Hall 20: Flirting with Male Nurse
21: In The Library
Note: By "room description" I mean, the entire room; text, menu and all.
Remember a few things if you design "other" room descriptions for Lunatix.
You could write a program that reads IGM.DAT to create Room18 (in fact, that
is really the only way for room 18 or 21). For a sample of a "fantasy"
room, check out the file ROOM99.TXT and you'll see an example. If you wish,
copy it to ROOM1.TXT and run Lunatix... just remember that the '*' key is
to exit, because room99.txt doesn't show a real menu. :)
As of version 3.1a, Lunatix also has RIP support. The room format listed
above works the same for ROOMx.RIP screens. For my own RIP screens (3.1a
only has the first 4 rooms RIPped) I include an <ESC> sequence at the end
of the RIP file to locate the cursor to the bottom of the RIP screen. Anyone
designing RIP rooms should keep that in mind, or use the RIP commands for
set
----------------
IGS SCRIPT INFO:
----------------
---- An addition to version 3.1A ------ IGS "Script" Support added ----
In Version 3.1a, I have added something I call an "IGS" which is kind
of like an IGM, only it's an "In-Game Story." This is like the old Choose
Your Own Adventure books many of us have seen at one time or another. You
read a section of the story, and make choices about what section to read
next. Well, Lunatix now supports this, and there's a Library room now where
IGS's are read (as opposed to the Elevator for IGM's). An IGS installs the
same way as IGM's -- except the data file is called BOOKS.DAT instead of
IGM.DAT. The first line is a title (color codes can be used) and the second
line is the data file name. An example section of BOOKS.DAT would be:
`5My `#Own `8IGS `7Story
C:\IGS\MYSTORY.TXT
After understanding the format of an IGS script, anyone can write one. No
programming skill of any kind is necessary. This should allow everyone who
has ever wanted to write an "IGM" do so -- in a small way -- by creating an
IGS instead. Your IGS is simply a text file with embedded commands to
control the IGS Script flow. Commands and Lables begin the a "%" sign. If
it isn't a built-in command, then it will be interpreted as a label. Labels
and commands must be the first and only thing on the line.
%CLS - clears the screen
%KEY - Asks the user to press a key, then clears the screen
%ESC - Exits back to the command Processor
%COM - Initialize choices. The %COM is followed by a space and then
a number, representing the number of available commands. On the
next lines, labels must be given (without the % sign, though) to
specify which section to read next if the user presses that
command.
The beginning of the IGS Script should be the first page -- no label should
be given for it. Note, if a label comes before an %ESC statement, then it
will be treated as text and printed. Any %CLS or %KEY outside a page block
will not be used.
For a more detailed example, see the "2CRAZIES.TXT" file. It makes use
of these commands, and maybe a quick look would help you understand it.
I will also create an IGS-K*.ZIP which will be an IGS Kit, that will include
a "viewer" for "playing back" and testing your IGS, as well as a generic
Install program that you can distribute with your IGS. However, as long as
you include some kind of documentation about how to edit the BOOKS.DAT
file to add or remove your IGS, an install program isn't mandatory
I am not going to approve/disapprove the IGS's as I will the IGM's and any
Add-Ons. I'm hoping that the IGS concept will catch on and there will be
tons of these interactive stories for Lunatix -- I think it would greatly
improve the game. All I *DO* ask is that you test your IGS and make sure
it is complete and works (no bugs, I mean). Good Luck, and I would love to
see any IGS's uploaded to my board... I'll put the good ones into my own
online game so my own players can read them. :)